import 'package:shared_preferences/shared_preferences.dart';

import '../constants/index.dart';

class TokenManager {
  // 定义token变量存取token
  String _token = '';
  String _refreshToken = '';
  init() async {
    // 首先获取Preference实例
    final instance = await _initStore();
    // 获取Token
    _token = instance.getString(GlobalVariable.TOKEN) ?? '';
    _refreshToken = instance.getString(GlobalVariable.REFRESH_TOKEN) ?? '';
  }

  // 初始化Preference实例
  Future<SharedPreferences> _initStore() async {
    return await SharedPreferences.getInstance();
  }

  // 存储token
  void setToken(String newToken,{String? refreshToken}) async {
    // 首先获取Preference实例
    final instance = await _initStore();
    instance.setString(GlobalVariable.TOKEN, newToken);
    // 赋值给_token变量
    _token = newToken;
    if(refreshToken != null){
       instance.setString(GlobalVariable.REFRESH_TOKEN, refreshToken);
      // 赋值给_refreshToken变量
      _refreshToken = refreshToken;
    }
  }

  // 获取token
  // 方式一：异步获取Token
  // getToken() async {
  //   final instance = await _initStore();
  //   return instance.getString(GlobalVariable.TOKEN);
  // }
  // 同步的方式回去token
  getToken() {
    return _token;
  }

  // 获取refreshToken
  getRefreshToken() {
    return _refreshToken;
  }

  // 删除token
  deleteToken() async {
    final instance = await _initStore();
    instance.remove(GlobalVariable.TOKEN);
    // 置空token
    _token = '';
    instance.remove(GlobalVariable.REFRESH_TOKEN);
    _refreshToken = '';
  }
}

final tokenManager = TokenManager();
